﻿Imports System.Text.RegularExpressions

Public Enum EnumBarcodeType
    GROUP_REPORT_CODE
    REPORT_CODE
    SEND_CODE
    CANCEL_CODE
    KEY_CANCEL
    KEY_SEND
    SYSITEM_CD
    INBOX_QTY
    UNIQUE_CD
    KEY_INPUT

    NONE
    RESET_CODE
    IRREGULAR_CODE
    SHIPORDER_CODE
    ORDER_CODE
    INNER_LABEL_CODE
    OUTER_LABEL_CODE_I
    OUTER_LABEL_CODE_D
    OUTER_LABEL_CODE_M
    END_LABEL_CODE
    ME_CLOSED_CODE
    EMP_CODE
    INNER_DELIVERY

End Enum

Public Class CBarcode

    Public Shared ReadOnly Property RESETCODE() As String
        Get
            Return CConst.CNS_RESET1
        End Get
    End Property

    Public Shared Function GetBarcodeType(ByVal barcode As String) As EnumBarcodeType
        '***************************
        '* リセットコードチェック
        '***************************
        If CCommon.isInStr(barcode, CConst.CNS_RESET1) Then
            'MessageBox.Show("取消コード１")
            Return EnumBarcodeType.RESET_CODE
        End If

        If CCommon.isInStr(barcode, CConst.CNS_END_LABEL) Then
            'MessageBox.Show("取消コード0")
            Return EnumBarcodeType.END_LABEL_CODE
        End If

        'Dim checkText As String = barcode
        ''MessageBox.Show("checkText:" & checkText)
        ''***************************
        ''* 未出荷総統括レポートコードチェック ""##"" 
        ''***************************
        'If checkText.EndsWith(CConst.CNS_BARCD_SHIPGROUP) Then
        '    If checkText.StartsWith(CConst.CNS_BARCD_SHIPGROUP) Then
        '        Return EnumBarcodeType.GROUP_REPORT_CODE
        '        'Return EnumBarcodeType.REPORT_CODE
        '    End If
        'End If

        ' ''***************************
        ' ''* ラベル読取終了コードチェック
        ' ''***************************
        'Select Case checkText
        '    Case CConst.CNS_END_LABEL
        '        Return EnumBarcodeType.END_LABEL_CODE
        '    Case CConst.CNS_KEYSEND
        '        Return EnumBarcodeType.SEND_CODE
        '    Case CConst.CNS_KEYDELETE
        '        Return EnumBarcodeType.KEY_CANCEL
        'End Select

        ''***************************
        ''* 未出荷統括レポートコードチェック "UN"
        ''***************************
        'If checkText.StartsWith(CConst.CNS_UNSHIPREPORT) Then
        '    Return EnumBarcodeType.REPORT_CODE
        'End If

        ''***************************
        ''* 出荷統括レポートコードチェック "SH"
        ''***************************
        'If checkText.StartsWith(CConst.CNS_SHIPREPORT) Then
        '    Return EnumBarcodeType.REPORT_CODE
        'End If


        ''***************************
        ''* 注文番号チェック "ODR" -->バーコード
        ''***************************
        'If checkText.StartsWith(CConst.CNS_ORDERCD_HEAD) Then
        '    Return EnumBarcodeType.ORDER_CODE
        'End If

        ''***************************
        ''* 画面からの入力チェック "[" "]"
        ''***************************
        'If checkText.StartsWith(CConst.CNS_KEY_HEAD) Then
        '    If checkText.EndsWith(CConst.CNS_KEY_END) Then
        '        Return EnumBarcodeType.KEY_INPUT
        '        'Return EnumBarcodeType.REPORT_CODE
        '    End If
        'End If


        ''***************************
        ''* 注文番号チェック "DEL"
        ''***************************
        'If checkText.StartsWith(CConst.CNS_CANCELCD_HEAD) Then
        '    Return EnumBarcodeType.CANCEL_CODE
        'End If

        ''***************************
        ''* 途中送信 "SEND_DATA"
        ''***************************
        'If checkText.StartsWith(CConst.CNS_SENDCD) Then
        '    Return EnumBarcodeType.SEND_CODE
        'End If

        ''***************************
        ''* 社内ラベルチェック
        ''***************************
        ''NNNNNNNNNNNN@UUUUXX
        ''NNNNNNNNNNNN@UUUU**
        'If checkText.Length > 7 Then
        '    If checkText.IndexOf(CConst.CNS_DELIMITER_LABEL_INNER) = checkText.Length - 7 Then
        '        If Regex.IsMatch(CCommon.TrimCode(checkText, CConst.CNS_DELIMITER_LABEL_INNER, EnumBarcodeType.INNER_LABEL_CODE), "[0-9A-Z]{4}") Then
        '            Return EnumBarcodeType.INNER_LABEL_CODE
        '        End If
        '    End If
        'End If


        ' ''***************************
        ' ''* 従業員コードチェック "DEL"
        ' ''***************************
        'Dim checkInfo As CCheck = CCheck.GetIns
        'Dim EmpData As CCheck.EmpData = checkInfo.ChkEmpData(checkText)

        'If Not EmpData.empCd Is Nothing Then
        '    Return EnumBarcodeType.EMP_CODE
        'End If

        Return EnumBarcodeType.NONE


    End Function


    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="value"></param>
    ''' <param name="type"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>

    Public Shared Function getBarcodeVl(ByVal value As String, ByVal type As String, ByVal getStrType As EnumBarcodeType) As String

        Select Case type
            Case CConst.CNS_ORDERCD_GROUP

                Dim groupCd As String = value.Replace("##", "")
                Return groupCd

            Case CConst.CNS_ORDERCD_REPORT
                'Dim reportCd As String = value.Substring(2, 13)
                Dim reportCd As String = value.Substring(2)
                Return reportCd

                'Case EnumBarcodeType.INNER_LABEL_CODE
                '    Select Case getStrType
                '        Case EnumBarcodeType.SYSITEM_CD
                '            Dim itemInfo As String() = value.Split("@")
                '            Return itemInfo(0) 'システム品番

                '        Case EnumBarcodeType.UNIQUE_CD
                '            'XXXXXXX@DDDD ->入り数外して@も外して渡す
                '            Return value.Substring(0, value.Length - 2).Replace("@", "")

                '        Case EnumBarcodeType.INBOX_QTY
                '            'XXXXXXX@DDDDII -> IIを渡す 
                '            Return value.Substring(value.Length - 2)
                '    End Select
        End Select

        Return ""
    End Function



End Class
